import java.util.ArrayList;

import javax.swing.JTextArea;

/**
 * 
 * @author Francisco Vallejo
 * 
 */
public class Metodo {
	DataBase dataBase = new DataBase();

	/**
	 * Metodo que llama a la funcion buscar alumno de la clase DataBase
	 * 
	 * @param dni
	 *            dni a buscar
	 * @return devuelve un objeto alumno lleno en caso de encontrarlo en el caso
	 *         contrario devuelve null
	 */
	public Alumno buscarAlumno(String dni) {
		Alumno aux = dataBase.buscarAlumno(dni);
		return aux;
	}

	/**
	 * Metodo que llama a la funcion de insertar un alumno nuevo de la clase
	 * DataBase
	 * 
	 * @param dni
	 *            dni de el alumno nuevo
	 * @param nombre
	 *            nombre de el alumno nuevo
	 * @param poblacion
	 *            poblacion de el alumno nuevo
	 * @param telefono
	 *            telefono de el alumno nuevo
	 * @param fecha
	 *            fecha de ingreso de el alumno nuevo
	 * @param carrera
	 *            carrera de el alumno nuevo
	 * @param textAreaInferior
	 *            pantalla donde se mostrara el alumno
	 * @return devuelve un alumno insertado en la base de datos
	 */
	public Alumno insertarAlumno(String dni, String nombre, String poblacion,
			int telefono, String fecha, String carrera,
			JTextArea textAreaInferior) {
		Alumno alumnoAux = new Alumno(dni, nombre, poblacion, telefono, fecha,
				carrera);
		Alumno auxiliar = dataBase.buscarAlumno(dni);
		if (auxiliar == null) {
			dataBase.insertarAlumno(alumnoAux);
			guardar();
		}else{
			alumnoAux = null;
		}
		return alumnoAux;
	}

	/**
	 * Metodo que llama a la funcion de Modificar un alumno nuevo de la clase
	 * DataBase
	 * 
	 * @param dni
	 *            dni de el alumno
	 * @param nombre
	 *            nuevo nombre de el alumno
	 * @param poblacion
	 *            nueva poblacion de el alumno nuevo
	 * @param telefono
	 *            nuevo telefono de el alumno nuevo
	 * @param fecha
	 *            nueva fecha de ingreso de el alumno nuevo
	 * @param carrera
	 *            nueva carrera de el alumno nuevo
	 * @return devuelve un alumno Modificado en la base de datos
	 */
	public Alumno modificarAlumno(String dni, String nombre, String poblacion,
			int telefono, String fecha, String carrera) {
		boolean cambiado = dataBase.modificarAlumno(dni, nombre, poblacion,
				telefono, fecha, carrera);
		if (cambiado) {
			dataBase.guardarDatos();
			Alumno auxiliar = dataBase.buscarAlumno(dni);
			return auxiliar;
		} else {
			return null;
		}

	}

	/**
	 * Metodo que llama a la funcion para Eliminar a un alumnode la clase
	 * DataBase
	 * 
	 * @param dni
	 *            dni de el alumno a eliminar
	 * @return devuelve true en caso de eliminarlo y false en cualquier caso
	 *         contrario
	 */
	public boolean eliminarAlumno(String dni) {
		boolean borrado = dataBase.eliminarAlumno(dni);
		if (borrado) {
			dataBase.guardarDatos();
			return true;
		} else
			return false;
	}

	/**
	 * Metodo para buscar alumnos de la misma carrera con la funcion de la clase
	 * DataBase
	 * 
	 * @param carrera
	 *            Carrera la cual buscaremos
	 * @return devuelve el ArrayList con los alumnos de la misma carrera sino
	 *         devuelve la lista vacia
	 */
	public ArrayList<Alumno> mostrarAlumnosPorCarrera(String carrera) {
		ArrayList<Alumno> alumnosPorCarrera = new ArrayList<Alumno>();
		alumnosPorCarrera = dataBase.mostrarAlumnosPorCarrera(carrera);
		return alumnosPorCarrera;
	}

	public void salir() {
		dataBase.guardarDatos();
		System.exit(0);
	}

	/**
	 * Metodo que llama a la funcion Para guardar los datos de la clase DataBase
	 */
	public void guardar() {
		dataBase.guardarDatos();
	}

}
